package beans;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;

import dao.EntityAlreadyExistsException;
import dao.InexistantEntityException;

import entities.Categorie;

@ManagedBean
@RequestScoped
public class CategorieBean extends SuperBean {
    
    @ManagedProperty(value = "#{mainBean}")
    private MainBean mainBean;
    
    //pour pouvoir passer en mode voirCategorie.xhtml pour produits.xhtml
    @ManagedProperty(value = "#{produitBean}")
    private ProduitBean produitBean;
    
    @ManagedProperty("#{param.idCategorie}")
    private Integer id;
    
    private String libelle;
    
            
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public void setLibelle(String libelle) {
        this.libelle = libelle;
    }
    
    public String getLibelle() {
        return libelle;
    }
    
    public void setMainBean(MainBean mainBean) {
        this.mainBean = mainBean;
    }
    
    public void setProduitBean(ProduitBean produitBean) {
        this.produitBean = produitBean;
    }
    

    public List<Categorie> getCategories() 
    {       
        return (List<Categorie>) mainBean.getGestionnaire().getAll(Categorie.class);
    }   
    
    public void nouvelleCategorie() {

        try 
        {
            mainBean.getGestionnaire().creerCategorie(libelle);
            mainBean.setMessage("La catégorie a été correctement créée.");
            libelle = "";
            
        } catch (EntityAlreadyExistsException ex) {
            mainBean.setMessage(ex.toString());
        }

        //on reste sur la même page donc pas besoin de return String pour faces-config.xml
    }
    
    /**
     * Préparation de modifierCategorieForm.xhtml avec les données de la catégorie à modifier
     * @param GET idCategorie = id
     */
    public void modifierCategorieForm()
    {
        if(id != null)
        {
            try
            {
                Categorie categorie = (Categorie) mainBean.getGestionnaire().get(Categorie.class, id);
                id = categorie.getId();
                libelle = categorie.getLibelle();
            }
            catch(InexistantEntityException ex)
            {
                mainBean.setMessage(ex.toString());
            }
        }
        else
            mainBean.setMessage("idCategorie est null");
    }
    
    public String modifierCategorie()
    {
        try
        {
            mainBean.getGestionnaire().modifierCategorie(id, libelle);
            mainBean.setMessage("La catégorie " + id + " a été correctement modifiée.");
        }
        catch(InexistantEntityException ex)
        {
            mainBean.setMessage(ex.toString());
        }
        
        return BeanFunctions.SUCCESS;
    }
    
    public void supprimerCategorie()
    {
        if(id != null)
        {
            try 
            {                        
                mainBean.getGestionnaire().supprimerCategorie(id);
                mainBean.setMessage("La catégorie " + id + " a été correctement supprimée.");

            } catch (InexistantEntityException ex) {
                mainBean.setMessage(ex.toString());
            }
        }
        else
            mainBean.setMessage("idCategorie est null");
    }

}
